
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(recipe-03 LANGUAGES CXX)

# 1 generation an object library from sources
add_library(message-objs
    OBJECT
        Message.hpp
        Message.cpp
)

# this is onlu needed for older compilers
# but doesn't hurt either to have it
set_target_properties(message-objs
    PROPERTIES
    POSITION_INDEPENDENT_CODE 1
)

# 2 dynamic library
add_library(message-shared
    SHARED
    $<TARGET_OBJECTS:message-objs>
)

set_target_properties(message-shared
    PROPERTIES
    OUTPUT_NAME "message"
)

# static library
add_library(message-static
    STATIC
    $<TARGET_OBJECTS:message-objs>
)

set_target_properties(message-static
    PROPERTIES
    OUTPUT_NAME "message"
)

add_executable(hello_world hello_world.cpp)
target_link_libraries(hello_world message-static)
